// 收货地址列表页面
import { 
  getUserAddresses, 
  deleteAddress, 
  setDefaultAddress,
  showSuccess,
  showError,
  showLoading,
  hideLoading
} from '../../../utils/addressApi.js';

Page({
  data: {
    addresses: [],
    loading: true,
    isEmpty: false
  },

  onLoad(options) {
    this.loadAddresses();
  },

  onShow() {
    // 从其他页面返回时刷新列表
    this.loadAddresses();
  },

  /**
   * 加载地址列表
   */
  async loadAddresses() {
    try {
      showLoading('加载中...');
      const result = await getUserAddresses();
      
      if (result.success) {
        this.setData({
          addresses: result.data || [],
          isEmpty: result.data.length === 0,
          loading: false
        });
      } else {
        showError(result.message || '获取地址列表失败');
        this.setData({
          loading: false,
          isEmpty: true
        });
      }
    } catch (error) {
      console.error('加载地址列表失败:', error);
      showError('网络错误，请重试');
      this.setData({
        loading: false,
        isEmpty: true
      });
    } finally {
      hideLoading();
    }
  },

  /**
   * 新建地址
   */
  onAddNew() {
    wx.navigateTo({
      url: '../address-edit/index?mode=create'
    });
  },

  /**
   * 编辑地址
   */
  onEdit(e) {
    const { id } = e.currentTarget.dataset;
    wx.navigateTo({
      url: `../address-edit/index?mode=edit&id=${id}`
    });
  },

  /**
   * 设置默认地址
   */
  async onSetDefault(e) {
    const { id } = e.currentTarget.dataset;
    
    try {
      showLoading('设置中...');
      const result = await setDefaultAddress(id);
      
      if (result.success) {
        showSuccess('设置成功');
        this.loadAddresses(); // 刷新列表
      } else {
        showError(result.message || '设置失败');
      }
    } catch (error) {
      console.error('设置默认地址失败:', error);
      showError('网络错误，请重试');
    } finally {
      hideLoading();
    }
  },

  /**
   * 删除地址
   */
  onDelete(e) {
    const { id, name } = e.currentTarget.dataset;
    
    wx.showModal({
      title: '确认删除',
      content: `确定要删除收货人"${name}"的地址吗？`,
      confirmText: '删除',
      confirmColor: '#ff4444',
      success: (res) => {
        if (res.confirm) {
          this.deleteAddressById(id);
        }
      }
    });
  },

  /**
   * 执行删除操作
   */
  async deleteAddressById(id) {
    try {
      showLoading('删除中...');
      const result = await deleteAddress(id);
      
      if (result.success) {
        showSuccess('删除成功');
        this.loadAddresses(); // 刷新列表
      } else {
        showError(result.message || '删除失败');
      }
    } catch (error) {
      console.error('删除地址失败:', error);
      showError('网络错误，请重试');
    } finally {
      hideLoading();
    }
  },

  /**
   * 选择地址（用于其他页面选择地址时）
   */
  onSelectAddress(e) {
    const { address } = e.currentTarget.dataset;
    
    // 获取页面栈
    const pages = getCurrentPages();
    if (pages.length >= 2) {
      const prevPage = pages[pages.length - 2];
      
      // 如果前一个页面有接收地址的方法，则调用
      if (prevPage.onAddressSelected) {
        prevPage.onAddressSelected(address);
      }
    }
    
    wx.navigateBack();
  },

  /**
   * 下拉刷新
   */
  onPullDownRefresh() {
    this.loadAddresses().then(() => {
      wx.stopPullDownRefresh();
    });
  }
});
